Version History¶
The following is a list of patch notes for the previous three minor updates.
Patch notes for updates not on this list can be found on the releases page on GitLab.
0.13.x¶
Note
Despite the jump in versions, 0.13.x is a direct descendant of 0.11.x. It is a migration of the functional 0.11.20 engine onto the 0.12.5 codebase. In theory, this ensures non regression of features and functionality from 0.12, along with some unreleased 0.12.5 fixes.
0.13.11¶
[Clean]
Moved from flake9 + Black to Ruff
Improved type hinting and formatting in several places
[feature]
Added
force
argument tofetch_results
, which will force runners to accept the remote files and statesAdded
header_only
toScript
/Computer
. If this isTrue
, attempts to generate only the resource request header & shebangCreated a
url_helpers
module with a conda activation function
[tests]
BaseTestClass
can now reset theURL
before cleanup, preventing a timeout if we’re testing a broken host
0.13.10¶
[performance]
Runner
no longer accesses theDatabase
, instead deferring toDataset
[feature]
Destructive actions like
wipe_runs
now ask for confirmation. (Set confirm=False to ignore this)
[fixes]
Runner
jobscripts no longer require thatsourcedir
is set, and will default to$PWD
, allowing faster debugging
[tests]
Testing now uses temporary directories for function execution, adding redundancy against file leakage
0.13.9¶
[features]
Computer
&Script
can now be created usingtemplate_path
, instead of relying on thetemplate
path search.
[fixes]
URL.transport
now inherits theraise_errors
setting of the parent.
[clean]
Various updates to code readability
Remove more instances of
_utc
tagged timestamp methods
[refactor]
Deprecate
Dataset.run_log
, replace withprint_run_log
Update how
Dependency
handles the internalDataset
list
[tests]
testingbaseclass
renamed tobasetestclass
0.13.8¶
[features]
Added
Runner.last_state_time(state)
, which will return the most recent timestamp forstate
[fixes]
Dependencies
now chain any database updates for any storedDataset
Dependencies
with differingremote_dir
now raise a clear errorFixed an issue when attempting to
format
the output of an iterable within a templaterun_summary_limit
is now configurable atDataset
creationInternal handling of times is now in line with reality
Dataset
can now setshell
andsubmitter
at initVersion
comparison can now handle wildcards
[clean]
Minor readability fixes to some errors and logs
[refactor]
BaseTestClass
object is now part of the main source, rather than being imported from the testing directoryRunner.last_submitted
now useslast_state_time
Dataset.run()
is now split intostage()
,transfer()
andrun()
Dataset.run()
now always prints a condensed summaryrsync
now uses the--checksum
flag by defaultRunner
now skips reading local files if it has never been run
[docs]
Fixed many cases of missing docstrings and type hints
[CI]
Migrated the
Dataset
,Dependency
,Runner
andDatabase
notebook suites
0.13.7¶
[fixes]
Fixed an issue related to
run_dir
andDependency
[refactor]
Refactored out the
DIR_{UUID}
syntax from jobscripts
0.13.6¶
[ docs]
Added a page dedicated to changing the
Transport
moduleMinor cleanup and readability improvements
[feature]
rsync
now checks that the locally installed version is high enoughAdded
URL.reset_cmd_history
Computer.from_yaml
can now override settingsTrackedFile
now provides thechmod
method, applies the given permissions to the local copy
[fixes]
URL
now resets the cmd history prior to adeepcopy
to prevent a crashFixed a bug where multi line functions would be incorrectly stored if they also had inner functions
Fixed a bug where children would search in an invalid location for parent results
[refactor]
Transferred internal script files are now made executable by chmod
Dataset
no longer logs when aDatabase
is deleted, or cannot be deleted because it does not exist
[CI]
Removed the migrated
storage
anddecorator
notebook test suites
0.13.5¶
[features]
It is now possible to specify (and access) iterables such as dicts and lists in Templates
Templates can now handle quoted
:
charactersTemplates now allow escaping characters with ``
[fixes]
Fixed a bug caused by concatenating ints to a string using
_
as the separatorFixed an instance where querying Substitution.shortform_op would cause a crash
[refactor]
Script
now recursively links values
0.13.4¶
[features]
You can now disable the timeout of a cmd call by setting
timeout
to 0,False
or a negative numberurl.cmd(...)
now supports thewith
context. Callingcmd
in this manner ensures that a process is killed in the event of an exception. Useful in combination withasynchronous
CMD
objects can now kill other PIDs, use with careURL
can now create a tunnel to a host usingurl.tunnel(local_port, remote_port)
[refactor]
URL
is no longer serialised by DatasetDataset.from_file
now requires a url, and will print a warning if not providedUnloaded
has been removed, objects are now expected to function without placeholders
[fixes]
URL.ping
andURL.test_connection
now uses a randomised files and dirsURL.gethome()
no longer returnsNone
ssh_prepend
can now be set inURL
initialisation
[CI]
Standard testing suite now uses the
logical
flag, making use of threadingThe
FunctionCache
andConnection
notebook suites have now been migrated into the standard suite
0.13.3¶
[refactor]
Increased scope of
replaces
andrequires
in templatesComputer.pack
now uses a more readable formatDataset
now handles file dumping, rather than relying onSendableMixin
JUBEInterop
module updated to use theComputer
module
[feature]
replaces
andrequires
will now parse a comma separated string into a list of valuesAdded
Computer.to_yaml
andfrom_yaml
which uses the new readablepack
Computer
now also accepts a path to a template file
[tests]
Computer
template functionality is now checked for regressionRefactored tests that tested
BaseComputer
to now testComputer
Added tests for
JUBETemplate
Serialisation tests migrated into standard
Transport tests migrated into standard
0.13.2¶
[fixes]
fixed a bug that could occur when setting
extra
onDataset
while using aComputer
0.13.1¶
[refactor]
remotemanager.logging
has been renamed toremotemanager.logging_utils
. This should prevent some potential name clashes with the inbuiltlogging
moduleTemplates are now handled by a dedicated
Script
classDeprecate
BaseComputer
[feature]
Dataset
now accepts aScript
entity as thefunction
argument, generating a script (executed byurl.shell
) using the arguments as inputAdded a
Computer
class that handles Templates more elegantly thanBaseComputer
Substitution
objects now have ahidden
parameter that prevents them from being added to the jobscriptSubstitution
objects now have anempty_treatment
parameter that dictates how they are treated when emptySubstitution
objects now have astatic
parameter that forces non-evaluation
[tests]
The standard test suite is now also tested with Python 3.7
[docs]
Updated documentation surrounding templates and jobscripts
Updated documentation surrounding non-function runs
Moved deprecated documentation to a “legacy” directory. It’s still available, but is untested and will be removed eventually
0.13.0¶
[features]
Version
can now “imply” the patch (and minor) versions if not provided (defaults to 0)add a
match
functionality toVersion
, checking against a generic version string like0.13.x
Database
now warns using more fine-grain version incompatibilitiesFunction
now has areturn_annotation
property
[fixes]
Version
now has a rigid output format for propertiesTemplates can now properly handle boolean operations (extends to
min
,max
, etc.)You can now specify
#extra#
within templatesDependencies
no longer uses a legacy run methodFunction.args
is now much more reliableFunction
no longer ignores the return type annotation
[refactor]
Migrated some dependency functionality from 0.12.5
[tests]
Standard tests now check that randomly generated directories do not already exist before executing
[clean]
Database write error is now more clear
0.11.20¶
[fixes]
Removes breaking issues with the 0.12.0 engine by replacing it with the 0.11.19 engine
[refactor]
Backport features from 0.12.4 onto the 0.11.19 engine
v0.12.x¶
Warning
All 0.12.x versions should be considered unstable. This version changes the engine in such a way that is incompatible with some machines. 0.11.20 is a feature backport of these versions. If you experience missing outputs using these versions, you should back up your data and update to 0.11.20.
0.12.4¶
[feature]
Added the
force
keyword tofetch_results()
, this will ignore any remote Dataset errors and continue with the fetch
0.12.3¶
[feature]
extra_files_send/recv can now be passed via a {local:remote} dict pair. This allows for fine control of where files will be transferred
[fix]
TrackedFile
objects passed to extra files no longer have their dirs ignoredDataset.run_path
now defaults toremote_dir
if nonexistentensure_list
no longer drops the values of a passeddict
, instead encasing it within alist
[refactor]
Runner
andDataset
now handle extra files via theExtraFilesMixin
classTrackedFile
objects are now represented via"{file}"
shorthandrsync
no longer wastes a command on creating a local dir
[tests]
Added testing sanitisation for file paths
pytest-xdist testing now uses a standardised testing class
0.12.2¶
[fix]
Dataset.copy_runners
now creates deep copies of runnersFixed some instances of
Function
incorrectly serialising a function
[refactor]
DynamicMixin
now also validates on value accessCopied Runner objects now update their name
RunnerState
is now less eager to claim that it is in a failed stateDatabase
now waits for temporary file until a timeout, rather than a flat delayensure_list
now uses a try/catch methodologyensure_filetype
now returns the input string if target type is Noneget_version
is now lazy
[docs]
Fix missing clarification regarding use on Windows
[CI]
Notebook setup now installs
[dev]
extrasUse pytest-xdist in standard test suite
0.12.1¶
[refactor]
Dataset.run_args
is now a modifiable dictionary containing the globally set parameters and defaultsRunner.run_args
is now a modifiable dictionary containing theRunner
level _overrides_ (Empty by default)The
run_args
used by a runner are now available atRunner.derived_run_args
[fixes]
Fixed a crash involving
ensure_list
and integers
[docs]
Improved the docs page on
run_args
0.12.0¶
[refactor]
The manifest file is now the absolute source of truth for Runners. It contains status updates,
stdout
andstderr
. All remote run behaviour is now based on the contents of this fileError files no longer exist, reducing the amount of files present
Dataset.wait
will raise an exception if an error is encountered in a dependency situation. This behaviour differs slightly from a non dependent situation, wherewait
simply exitsRunner
job submission commands are now generated as a list byRunner.generate_runline()
check_runner_outputs
has been removedInternal timestamps are now in UTC format
Dependencies use more
Dataset
andRunner
code for stagingFunction
now uses regex to extract the name and signature from string inputs
[fixes]
The initial run_cmd is no longer always asynchronous
Runner
no longer accepts state changes from before the current runFixed several instances of
Function
not properly inserting*args
and**kwargs
Fixed
Function
discrepancies between python object and string based initialisation
[features]
- Added
Runner.stdout
andRunner.stderr
You can now use the
print()
function within your jobsAccess to
manifest.write()
still remains
- Added
TrackedFile
now has alocal_time_utc
property, which callsos.path.getmtime()
and converts to UTC
[tests]
Moved several tests to the standard directory, to be tested outside of nbval
v0.11.x¶
0.11.19¶
[features]
wait
can now await a single runner, pass aRunner
object towait
to await only that runnerBaseComputer
now raises an exception when attempting to set a value that already existsSubstitution
objects now return a clearer error when attempting to create a dynamic link
[fixes]
Generalised more code relating to
Resource
/Substitution
Temporary arguments now set their values properly
[refactor]
Function
now has more common code when storing callable or string inputs
[clean]
The first submission function now has a docstring
0.11.18¶
[refactor]
Jobs are now submitted via bash function, instead of a single line command
Dataset.reset_runs()
now defaults towipe=False
URL.cmd
now returns aCMD
object ondry_run
[fix]
Fixed a crash where
RunnerState
would error on comparison to a nonRunnerState
objectRunnerState
<= and >= operators now function correctly
0.11.17¶
[fixes]
Fixed an issue where using more than one
=
symbol in a template would cause a failure
[features]
DynamicValue
objects can now handle boolean operations (<
,<=
,=>
,>
,==
,!=
)
[refactor]
Added
try_value
function, which must now be used internally when comparingDynamicMixin
andDynamicValue
objects
0.11.16¶
[feature]
Runners now use a
manifest
file for updating their status and checking run timesAdded
ds.update_runners()
, which updates the runner history with the manifest content
[fixes]
Runner history is now sorted by time
Runner history insertion now checks that the state does not already exist in the whole history, rather than just against the current state
Added
finished
property to runner statesAdded
sub()
function toTrackedFile
, allowing for inplace substitutions
[docs]
Added a page detailing the
manifest.write
function, andloaded
[refactor]
Repo and Manifest depend on an internal uuid, which can be overridden by dependencies
Dependencies now use the
Dataset._write_to_repo
function, rather than implementing their own
[tests]
Added a CI test that ensures that a
Dataset
will be able to skip after an update
0.11.15
[features]
Added the
JUBEInterop
module. Currently only supportsJUBETemplate
Computers can now accept “semantic” time formats for arguments with
format=time
. For example: “24h” will be converted to “24:00:00”Template based Computers can now use the “wipe” or “local” methods when handling missing arguments
DynamicValue
will now attempt to be more clear when warning about an overwrite
[fixes]
An error is now raised if templates have multiple substitutions with differing kwargs
BaseComputer.required
now checks all arguments, not justResource
Substitution now also checks availablity using regex
Computer Arguments now accept the json-style “true” and “false”
[refactor]
BaseComputer
file downloading is now done within a staticmethodAdded a special case for
entry_format
when format is “time”
0.11.14¶
[fixes]
Fixed an issue where
Substitution
objects would not be applied if their output evaluated toFalse
0.11.13¶
[fixes]
Fixed an issue where
Substitution
objects would fail to apply to more than just the first instance
0.11.12¶
[docs]
Added initial tutorial page on running a
Dataset
without a function
[features]
Added
Script
, available atremotemanager.connection
. Subclass ofBaseComputer
, but provides arun()
method.Dataset
can now takeNone
as a function.Runner
arguments will then be passed directly to thescript()
method of theurl
, and the stdout captured as the result.
[fixes]
Setting temporary values in
run()
no longer permanently updates argumentsFixed a bug that caused default values to always be treated as
str
in evaluations
[refactor]
Transport
is now a property of theURL
, rather thanDataset
URL
now has auuid
, based off connection parametersBaseComputer
now has auuid
, based offURL.uuid
and arguments
0.11.11¶
[features]
Templates can now accept python f-string style values, creating Dynamic links where possible
Added
computers.concat_basic
, allowing concatenation of strings with DynamicsAdded
target_kwargs
toSubstitution
, provides a dict of the originally specified kwargs
[fixes]
Dynamics now cast to str when attempting to mix strings with non strings
[docs]
Added docs for dynamic templates
[refactor]
default
property of Dynamic arguments now uses the correct formattingSubstitution
objects are now created using a newfrom_string
classmethodAdded
utils.Tokenizer
, which aids in digesting arbitrary code
[performance]
Optimised the order that
DynamicValue
calculates operations
[tests]
Added some non
nbval
testing
0.11.10¶
[fixes]
Enables the
optional
keyword for substitutions
0.11.9¶
[features]
Added
stream
option toCMD
, which will attempt to stream stdout to the terminalAdded
progress
option torsync
, which adds the--progress
flag to transfers and streams the output
[refactor]
Added output for running a dataset
Verbose output for transferring files now a part of
Transport
Verbose
properties are now granted through the@make_verbose
class decoratorAdded
h
flag to defaultrsync
flags
[fixes]
Fixed instances of spurious
)
characters being added to logging calls
[CI]
Update CI scripts for new ubuntu container
0.11.8¶
[features]
Resource
andSubstitution
objects can now set (and store) theirvalue
Use
collect_values=False
when storing aBaseComputer
to avoid this behaviour
[refactor]
Updated how
verbose
works, now decoupled from loggingLogs are no longer
yaml
formatRemoved
LoggingMixin
Removed
Quiet
Updated f-string logging calls with preferered lazy method
Logger
now warns only when force deleting a logfile with content
[fixes]
DynamicMixin
no longer checks for onlyResource
when linkingLogger
now only logs when required, no longer creating an empty file
[tests]
Replaced nbval cell comments with jupyter cell tags
0.11.7¶
[fixes]
Fixed a data loss issue related to
yaml.dump
[clean]
Update license dates
Update pypi information
[docs]
Add quickstart info to README
0.11.6¶
[features]
Computers now save the current remotemanager version when storing to dict (disable with
include_version=False
)BaseComputer
subclasses that fail to call thesuper().__init__
now raise a more helpful error when generating a script
[docs]
Minor clarity improvements
Add some missing docstrings and typehints
[refactor]
Common code of
Resource
andSubstitution
moved to their mixin classRemoteFunction
is now located in thedecorators
module
[fixes]
Defaults for computer arguments can now be quoted with “ or ‘
Fixed strange behaviour when dealing with strings addition in argument defaults
Fixed an issue where
DynamicValue
would ignore thevalue
property
[clean]
Reduced argument objects no longer have redundant brackets surrounding a calculation
[tests]
Testing suite does a better job of cleaning up after itself
Fixed argument default tests that were testing the wrong thing
Legacy computer unpack testing now actually uses the legacy method
0.11.5¶
[refactor]
Remove unserialisation protections from
SendableMixin
. They were too easy to bypass, and causing bugsRunners now intialise and connect to the database at init
[fixes]
Resource
objects no longer drop theirtag
andseparator
attributes after a serial loopFixed an instance where
CMD.latency
would over estimate the delaylanding_dir
no longer defaults to local $HOME
[docs]
Updated installation info
Added warning to intro regarding running with untrusted data
Added the
move_docs.py
script, allowing for moving documentation pages while maintaining linksRearrange documentation layout
Fix broken repository links
Overhaul Computer documentation
Minor clarity improvements
[clean]
Added
docs
installation optionalUpdate
dev
installation optionalSeveral cleanup passes on various source files
[tests]
add seveal tests to increase coverage
[CI]
PyPi push is no longer allowed to fail
0.11.4¶
[features]
BaseComputer
can now accept atemplate
, extracting and creatingSubstitution
objects for any#VALUE#
stringsSubstitution
can now acceptformat
Source code for a
parser
is now available at theparser_source
property
[fixes]
temporary runtime args no longer update only
Resource
objectsfixed an issue where
format_time
would not bother to convert the input
[refactor]
format
is now stored in theDynamicMixin
0.11.3¶
[refactor]
Substitution.entrypoint
renamed toname
[features]
Default args can now be quoted to prevent evaluation
0.11.2¶
[docs]
Add a section to Dependency tutorial describing the nuances of environment variables
[feature]
Added
Substitution
objects, a companion toResource
that replaces a target string with a variableAdded
arguments
,argument_objects
andargument_dict
properties toBaseComputer
Added
substitutions
,substitution_objects
andsubstitution_dict
properties toBaseComputer
Resource
objects can now specify their tag, defaults to--
Resource
objects can now specify their separator, defaults to=
Added
DynamicValue.static
, which returnsTrue
if the value has no chainformat_iterable
can now also collect the object type withprint_type=True
[refactor]
BaseComputer
resources
,resource_objects
andresource_dict
return onlyResource
derived objectsDynamicValues
are now based on aDynamicMixin
classArgument objects no longer rely on
SendableMixin
, using theirreduced
propertyResource
objects now use__slots__
URL.python
andURL.shebang
are no longer property based attributesTransport
no longer stores a copy of theURL
, relying onDataset
to ensure it is properly populatedAdded
Dataset.prepare_for_transfer()
, which updates theTransport
URL
. Called byavoid_runtime()
extra
insertion is deferred entirely to theURL
, allowing substitutions to work on temporary argsSubmission section can now be moved in the jobscript by adding
"#SUBMISSION_SUBSTITUTION#"
Toplevel imports are no longer relative
[fixes]
Fixed an issue where
Resource
objects could be set improperlyBaseComputer
should now properly serialise connection parametersrun_args
inrun()
should no longer permanently update aBaseComputer
BaseComputer.extra
is now properly serialisedOverwriting a
DynamicValue
that has a chain now properly prints a warningURL.port
is no longer permanent
0.11.1¶
[fixes]
Fixed an issue where a parser could be ignored by
to_dict
[perf]
Tweaked the method of Resource collection in
to_dict
0.11.0¶
[docs]
Add FAQ info on potential
rsync
workaroundsAdd FAQ info on updating a
Computer
to0.11.x
Overhaul
Computer
tutorials
[refactor]
- Overhaul
Computer
definitions optional
andrequired
objects are removed, and replaced with aResource
object. Useoptional=False/True
args to enforce eitherReplaced
required_or
spec field withrequires
andreplaces
keywords ofResource
Replaced
optional_defaults
spec field withdefault
keyword ofResource
Resource
outputs are cast toint
if possible (or not blocked byformat
keyword)parser
can now be defined directly on the class, in a pythonic wayAdded a limited ability for custom
BaseComputer
derived classes to define user customised functionalityBaseComputer
now defines a default parser which should work reasonably well, or serve as a basis for your own
- Overhaul
Example_Slurm
andExample_Torque
no longer have an underscore in their names (ExampleSlurm
&ExampleTorque
)format_time
function is now available at toplevelremotemanager.connection.computers
Function
will no longer removeself
if it is found. (Can be forced added withforce_self=True
)
[features]
Added
DynamicValue
, an internal value store forResource
that allows for deferred calculation. This enables setting dependent variables. For example:url.nodes = url.mpi * url.omp / url.cores_per_node
parser
now has access to self within the functionResource
has aformat
keyword that accepts the “float” and “time” options“float” allows output to be formatted as a float
“time” will convert integer seconds to HH:MM:SS format
run_args
are available within the parser atResources["run_args"]
Added
resource_tag
toBaseComputer
andtag
toResource
. This allows setting of the pre--flag
“tag”Added
resource_separator
toBaseComputer
andseparator
toResource
. This allows setting of the interflag=value
“separator”
[CI]
Increase repeatability of some tests
v0.10.X¶
0.10.19¶
[fixes]
CMD
now warns if the stderr is empty, but returncode is nonzeroFixed an issue where
CMD._file_communicate
would be too agressive when reading files
[refactor]
CMD
now internally tracks the returncodeDataset.results
anderrors
now usesavoid_runtime
, prevents some race conditions
[docs]
Add basic LaTeX config
0.10.18¶
[features]
Dataset
tries to replace any missing runner files onfetch_results()
Added
Dataset.retry_failed
, reruns only runners marked withis_failed = True
Added
force_ignores_success
as an argument forrun()
. Needs to beTrue
forforce
to run Runners that are marked asis_success = True
Added
TrackedFile.exists_local
property
[refactor]
Runners will now not run if
is_success
(useforce
ANDforce_ignores_success
to run)Transfer CMDs are available at
Transfer.cmds
[docs]
Add FAQ section on partially failed datasets
[performance]
Minor optimisations on Transfers
0.10.17¶
[refactor]
Added a
shebang
argument to URL. This is also accessible at theDataset
level.
0.10.16¶
[features]
Runners now check that the remote python version is at least 3.x.x
[fixes]
Function
now ignores any content beforedef ...
, allowing for decorators and comments
0.10.15¶
[features]
Added
BaseComputer.generate_cell()
which will produce a string which can be copied into a Jupyter cell, producing an editable reproduction of the currentComputer
Added
-q
flag to URL.ssh by default, this should reduce the number of issues caused when messages are broadcast on stderrDataset
run_args
are now available inBaseComputer.parser
functions atresources["run_args"]
[fixes]
Fixed an issue where functions containing
@
characters would become mangled if stored as aFunction
0.10.14¶
[features]
BaseComputer.to_yaml()
now prints the Parser in a more legible formatsAdded
base.time_to_s
, converting aHH:MM:SS
string to integer seconds
[docs]
Tweaked some docstrings and signatures
0.10.13¶
[fixes]
BaseComputer.from_repo()
now functions as expected
[refactor]
Updating
Dataset.dbfile
is now more streamlined
[clean]
clean instances of
" f"
autoformattingapply a pass of pycharm inspections
0.10.12¶
[docs]
add FAQ
[feature]
BaseComputer
now dumps parser as a direct source string, rather than aFunction
object
[fixes]
SanzuFunction
can now handle functions with type hinting
0.10.11¶
[docs]
Added missing complex serialisation tutorial
[fixes]
Fixed a serialisation bug related to numpy (issue #8)
Fixed an edge case where an object would pass json serialisation but not yaml
0.10.10¶
[features]
append_run
andinsert_runner
now have the optionreturn_runner
, which returns the appended runnerFunction
now exposes a list of args atargs
SanzuFunction
can now be called using non keyword args
[fixes]
- Fixed a bug where
Function
was unable to regenerate a python object. This also fixes a related bug with
BaseComputer
- Fixed a bug where
0.10.9¶
[features]
Added
SanzuFunction
, allowing tagging of functions to run remotely
[refactor]
Jupyter
module renamed toDecorators
[docs]
Extra Functions
renamed internally toDecorators
0.10.8¶
[features]
Dataset.wait
now has the optionsuccess_only
, which ignores failed runsDataset
now has adefault_url
property, allowing it to be set for all created Datasets
[fixes]
Dataset.all_success
now polls remote as expectedsanzu
function is now named__sanzu_fn
, fixing an ambiguous name clash
[clean]
remove
Numpy
dependency, only required for testsadd functionality to clean documentation of pytest-nbval tags at
docs/source/clean_docs
[docs]
now cleaned of all pytest-nbval tags
[CI]
Add retries to relevant tests
0.10.7¶
[docs]
Update existing
sanzu
docsAdd note on
spull
tosanzu
docsAdd note on exceptions to
sanzu
docs
[features]
sanzu
now returns the cell outputsanzu
will emit any warnings or errors it encounters
[refactor]
sanzu now raises an exception if an empty cell is passed
0.10.6¶
[fixes]
Changing the
URL
associated with aDataset
now also changes the correspondingTransport
URL
large run summary now correctly prints forced runs
fixed an issue which prevented a
url
from being serialised aftertest_connection
was issued
0.10.5¶
[features]
Runners
now have theset_run_arg
suite of functionsDataset
now has anall_success
property, returning True if all runners have completed successfully
[fixes]
RunnerStates
no longer report asfailed
for incomplete runsFunction
no longer mangles signatures with renamed*args
and**kwargs
[docs]
Add a section on
run_args
0.10.4¶
[features]
ds.backup
now has afull
option, which will also collectextra_files_send
[fixes]
url.passfile
andkeyfile
are now settable propertiesDataset.restore
no longer overwrites an existingDataset
by default
0.10.3¶
[docs]
Tweaked intro page on requirements
[refactor]
Added a workaround for
ast.unparse
that allows the local machine to run python 3.7
0.10.2¶
[docs]
Added Version History page
Update index page
Update note on version limtations
[features]
Added
sshpass_override
, allowing overriding of thesshpass
stringURL
now splits a"user@host"
string
[fixes]
Remove usages of | syntax from signatures
Bump minimum python version to 3.9
[CI]
Minimum python version (3.9) is now tested within the CI
0.10.1¶
[docs]
Minor improvements to Dataset tutorial
[features]
Added
url.ssh_insert
, allowing a custom string to be placed just after any ssh call
[refactor]
BaseComputer.argument_dict
is now much more clearhost
is now the first kwarg ofURL
0.10.0¶
[fixes]
Fixed an instance where a runner which raises a warning but ultimately completes would never be marked as such
[refactor]
Runners now inherit their base
run_args
from the parentDataset.run_args
must now be set by theset_run_arg
family of functions
[fixes]
Runner
run_args
are now always valid for the current state
v0.9.X¶
0.9.24¶
[docs]
Update introduction package overview image
Added a section to intro on requirements
[fixes]
Fixed an issue where a non-explicit remote directory would break result recovery
[features]
Added
url.expandvars(string)
which will pass the string through the remote, expanding any variables
[refactor]
Remote, local and run dirs are now sanitised to PurePosixPath
0.9.23¶
[features]
Added boolean
results
,errors
andextras
args tofetch_results()
Added
ds.fetch_errors()
which only fetches error files
[fixes]
wait()
now properly awaits single runslazy_append
context no longer errors if nothing is appendedFixed an issue where a directory sent with extra files could not be wiped
Fixed an issue where sending a file named “*” could cause dangerous interactions with file wipes
[refactor]
Dataset(skip=...)
is no longer solely dependent on database presenceRunners that have not been run now return
None
for theiris_finished
0.9.21¶
[docs]
API documentation is now much cleaner, modules are only documented within their module page
Added dedicated section on complex serialisation
Added a note on
run_cmd
to failure tutorialMade Quickstart quicker, and more relevant
[fixes]
Fixed some instances where
Function
would improperly parse the signature
[clean]
Removed some more instances of
__all__
reliant imports
0.9.22¶
[refactor]
Runners that fail now have a
RunnerFailedError
as their result
[fixes]
Newly created runners no longer report as
is_failed
0.9.20¶
[feature]
Added
ds.insert_runner(runner)
, allowing insertion of an unmodifed runner to a DatasetAdded
ds.copy_runners(dataset)
, copying runners fromdataset
intods
[fixes]
Fixed an instance where a
Transport
could hold a its ownURL
, separate toDataset
[refactor]
Runners will no longer run if their error file already exists (usually populated by a parent)
Child jobs that have a pre-populated error file will pass it along the chain
Runners now clear their
result
anderror
properties at run (files remain untouched)
[tests]
Increased reproducibility of some unstable tests
[docs]
Overhaul tutorial on handling failures
0.9.19¶
[features]
Added the
dir_mode
option toTransport
. On a multi-file transfer, files are copied into a temporary dir and copied using “*”, instead of using bash brace expansionAdded
URL.landing_dir
, allowing the user to set the “landing” directory that commands are executed in by default. Functions by prepending acd {landing_dir} &&
to each cmd
[fixes]
Fixed an issue where a
Dataset
could repopulate its database incorrectly
[docs]
Add docs sections for new features
0.9.18¶
[fixes]
scp
no longer tries to create the local target dir on the remote machine on pull
[refactor]
scp
now formats commands similarly torsync
0.9.17¶
[fixes]
Error files are no longer ignored if there is a result present
Single runner runs no longer wipe all error files
[docs]
Fix a dependency issue preventing docs compilation
0.9.16¶
[docs]
Add documentation for the new Backup and Restore systems
Trim Dataset tutorial
[features]
Added
Dataset.backup
andDataset.restore
, allowing backing up, of a dataset and its results to a zip file for later recoveryAdded
Database.backup
, which will backup the current database file tofile
. Appends.bk
to the current name by default
[fixes]
Dataset not longer contaminates the
extra_files_recv
with send when doing a remote searchesFixed an issue where objects within lists would not be deserialised
0.9.15¶
[fixes]
Runners that have not been run can no longer be considered for completion
Dataset extra can now be set after initialisation
[refactor]
BaseComputer is now importable from
remotemanager
SendableMixin now uses the same method for objects that use
__slots__
and__dict__
[tests]
Fix wrongly named test
0.9.14¶
[features]
Added
runner.full_error
, returning the full content of the error file as a string
[fixes]
Using a function called dump or load no longer silently fails
ds.results
now checks if there are errors and sends a warning if there areTrackedFile.content
now returnsNone
if the file does not exist
0.9.13¶
[fixes]
Appending a runner that already exists now warns using the existing runner name
Database no longer sorts runners alphabetically
Database.find()
now returns an empty dict if the value was not foundFixed an issue where an old Dataset could be updated into a new one
Fixed an issue where
sanzu
would raise an error after a skipped runUpdate sed command to perform identically on *nix and BSD based OSes (@wddawson)
0.9.12¶
[features]
avoid_nodes
is now arun_arg
, meaning you can use it as part of a dependency
[refactor]
Improve
TrackedFile.write
, now attempts to convert args to string typeTrackedFile.write
now has a add_newline arg (defaultsTrue
)Moved the base
Transport._cmd
method into thecmd
method
[clean]
Replace instances of explicit
TrackedFile
writing withTrackedFile.write
0.9.11¶
[features]
Lazy appends now only print a summary of the process after completion, rather than for each runner
If the number of runners is more than
Dataset.run_summary_limit
(defaults to 25, settable),run()
will print a summary instead of a per-runner update
0.9.10¶
[refactor]
Runner now wipes and reinitialises any TrackedFile instances at run, making them “static”
TrackedFile no longer has Logging access, allows full conversion to
__slots__
extra files are now handled via
TrackedFile
is_finished
is now checked against the Runner files’last_seen_remote
0.9.9¶
[fixes]
SendableMixin
now correctly handles objects that use__slots__
[refactor]
check_runner_outputs
now also checks for extra_files_recvReplaced an instance of old run path generation with
runner.run_path
0.9.8¶
[refactor]
Removes wildcard import from toplevel
__init__
[fixes]
Database.find()
now searches more thoroughly. Usegreedy=True
for old behaviour
[clean]
Update pre-commit hooks
0.9.7¶
[fixes]
Master dir location passing is now done via a sed update of the jobscripts
wipe_local
no longer deletes local files from extra_files_send
0.9.6¶
[refactor]
wipe_local
now uses the same file collection methodology as wipe_remotehard_reset
,wipe_local
andwipe_remote
now default tofile_only=True
0.9.5¶
[features]
Added
runner.is_failed
andrunner.is_success
, returningTrue
/False
if the runner has completed successfully or notAdded
runner.extra
, which allows extra lines to be inserted into the jobscript of a runner. Use just like a run_arg, lines are inserted prior to submission.
[docs]
Add a section regarding handling of failed runners
[CI]
Tests are now split into sections, forcing some level of parallelisation
0.9.4¶
[fixes]
Dataset master dir is now given to the runners via command line instead of environment vars
[features]
Added
success
property ofRunnerState
, allows for extra contextAdded
ds.failed
, a list of runners reporting to have failed
0.9.3¶
[features]
Added
runner.set_state()
, which allows force setting of the state (see fixes)
[fixes]
Fixed an instance where an older run could masquerade as the results of a more recent one
Runner state update now blocks the change if it would duplicate the state
0.9.2¶
[features]
Adds
ds.set_run_args
, allowing a quick way of setting a run arg for each runner in the dataset
[fixes]
Satisfied runners no longer re-update their status to “satisfied”
0.9.1¶
[fixes]
Lazy append is now O(N) when appending to a dataset that has a linked dependency
0.9.0¶
[refactor]
Drastically changes how runners are handled within a run
TrackedFiles are now much more prevalent, and have increased power
Dependencies can now be run from anywhere in the chain
[features]
Runner states are now handled in a RunnerState class, allowing for more precise state checking and tracking
TrackedFile allows for obtaining a
relative_remote_dir(source)
, which gives a callpath fromsource
to the fileTrackedFile now has a
write
methodTransport now has direct support for a TrackedFile
Added
utils.dir_delta
, which gives the relative directory level difference between two directories